/**
 * <p>Title: AuthorityDao</p>
 * <p>Description: 权限Dao接口</p>
 * <p>Copyright: Shanghai Batchsight Pharmaceutical Technologies, Inc. Copyright(c) 2016</p>
 * @author Huang Zhong wei and Chen Wei
 * @version 1.0
 * <pre>Histroy:
 *       2016-10-18  Huang Zhong wei  Create
 *       2016-12-19  Chen Wei 
 *</pre>
*/
package cn.jhg.account.persist;

import java.util.List;
import java.util.Map;

import cn.jhg.account.entity.Authority;
import cn.jhg.account.entity.UserGroup;

public interface AuthorityDao {
	/**
	 * 新增权限
	 * @param au	Authority
	 * @return		Error Code
	 */
	public int addAuthority(Authority au);

	/**
	 * 删除权限
	 * @param auid	Authority ID
	 * @return 		Error Code
	 */
	public int deleteAuthority(int auid);
	/**
	 * 删除组权限
	 * @param auid	Authority ID
	 * @return 		Error Code
	 */
	public int deleteUgAuthority(int auid);

	/**
	 * 更新权限
	 * @param au	Authority
	 * @return		Error Code
	 */
	public int updateAuthority(Authority au);

	/**
	 * 按用户组 ID 查询权限
	 * @param ugid	User Group ID
	 * @return		用户组所拥有的权限 id 集合
	 */
	public List<Integer> queryAuthority(int ugid);
	
	/**
	 * 按用户组 ID 查询权限
	 * @param ugid	User Group ID
	 * @return		用户组所拥有的权限 id 集合
	 */
	public List<Authority> queryAuthoritys(int ugid);
	/**
	 * 根据ID获取权限
	 * @param name	String
	 * @return		Error Code
	 */
	public List<Authority> queryAuthorityExists(int ugid);
	
	/**
	 * 获取权限 
	 * @param name	权限名称
	 * @return		Error Code
	 */
	public Authority getAuthority(String name);
	
	/**
	 * 模糊查询获取权限
	 * @param name	String
	 * @return		Error Code
	 */
	public List<Authority> findAuthorityByName(String name);
	
	/**
	 * 根据ID获取权限
	 * @param name	String
	 * @return		Error Code
	 */
	public Authority getAuthorityById(int aid);
	
	/**
	 * 添加用户组权限
	 * @param Map	map
	 * @return		Error Code
	 */
	public int addUserGroupAuthority(Map<String,Integer> map);
   
	/**
	 * 根据ID获取权限
	 * @param Map (ugid和aid)
	 * @return		int 
	 */
	public int deleteUserGroupAuthority(Map<String,Integer> map);
	
	/**
	 * 根据权限id获取有这个权限的用户组
	 * @param aid	权限id
	 * @return		用户组id 的List and ErrorCode
	 */
	public List<Integer> findUserGroupByAid(int aid);
	
	/**
	 * 根据权限id获取有这个权限的用户组
	 * @param aid	权限id
	 * @return		用户组信息 的List and ErrorCode
	 */
	public List<UserGroup> findUserGroupsByAid(int aid);
	
	/**
	 * 查询权限名字或描述中出现关键字的记录
	 * @param str	 输入为空格分隔多关键字,多关键字间为“或”关系, 查询权限名字或描述中出现关键字的记录
	 * @return	权限ID的List and ErrorCode
	 */
	public List<Integer> findAuthority(String str);
	
	/**
	 * 查询权限名字或描述中出现关键字的记录
	 * @param str	 输入为空格分隔多关键字,多关键字间为“或”关系, 查询权限名字或描述中出现关键字的记录
	 * @return	权限实体的List and ErrorCode
	 */
	public List<Authority> findAuthorityDetail(String str);
	
	/**
	 * 根据用户组id删除权限
	 * @param ugid	用户组id
	 * @return		int 
	 */
	public int deleteUserGroupAuthorityByUgid(int ugid);
}
